

	CONTAINERE - REZOLVARE
       ------------------------

	Dificultatea problemei consta in aceea ca la fiecare moment de timp avem doar 2 containere
disponibile, iar ordinea greutatilor este prestabilita.
	O prima idee este de a folosi o matrice C cu liniile si coloanele indexate cu valori 0..
gmax cu urmatoarea semnificatie:
C[i,j] = nr. minim de containere necesare ca la pasul curent sa fim in situatia in care obiectele
din cele 2 containere disponibile au respectiv greutatile i si j. In acest mod, dupa ce robotul isi
incheie activitatea, valoarea cautata va fi minimul valorilor acestei matrice.
	Fie i greutatea obiectelor din primul dintre containerele disponibile; acest container va
fi referit in continuare prin C1, iar celalalt prin C2. Sa observam ca valorile liniei i din C pot
fi inlocuite prin nr(i) si b(i) unde:
- nr(i) = min(C[i,j]), j=0,..,gmax.
- b(i) = cel mai mic indice j cu c[i,j]=nr(i).
- valorile c[i,j] cu c[i,j]>nr(i) nu sunt folositoare;
- dintre valorile j1,j2 cu c[i,j1]=c[i,j2]=nr(i) si j1<j2 este suficient sa retinem j1, perechea
(i,j1) fiind evident mai "promitatoare".
	
	Rezumand:
- nr(i)=nr. minim de containere necesare ca la momentul de timp curent in containerul C1 sa se afle
greutatea i;
- b(i)= cea mai mica greutate ce se poate afla in C2 in situatia in care in C1 se afla greutatea i,
si au fost necesare nr(i) containere.
	Initializarule necesare sunt:
- nr(i) = + infinit
- b(i)=0
- nr(0) =1, b(0) = +infinit.

	La considerarea unei noi greutati g, perechea de valori (nr(i),b(i)) se modifica intr-una
din situatiile:
1) greutatea nu poate fi introdusa in C2, iar robotul hotaraste sa inchida C2, inlocuindu-l cu un
nou container, si in acest caz noua pereche este (nr(i)+1,g);
2) greutatea este introdusa in C2: acest lucru este posibil doar daca b(i)+g<=gmax si in acest
caz noua pereche este (nr(i),b(i)+g).
3) se ajunge la greutatea i in C1 prin adaugarea lui g. Acest caz este posibil doar daca i>=g.
Noua pereche va fi (nr(i-g),b(i-g)). Sa observam ca aceasta atribuire impune ca i sa parcurga
descrescator valorile 0..gmax.
	Noua valoare a perechii (nr(i),b(i)) va fi cea mai mica, in ordine lexicografica, dintre
perechile de mai sus.
	Mai ramane cazul in care robotul inchide containerul C1 si deschide altul. Aceasta actiune
 are sens doar daca nu se poate adauga g lui C2. Drept urmare:
(nr(0),b(0)) <- min { (nr(i)+1,b(i)) | i>-=gmax-g+1 }
	Aceasta atribuire trebuie sa urmeze imediat dupa fiecare citire a unei noi greutati, excep-
tand prima.